<?php

use Faker\Generator as Faker;

/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/

$factory->define(App\User::class, function (Faker $faker) {
    static $password;

    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'avatar' => $faker->imageUrl(256,256),
        'confirm_code' => str_random(64),
        'password' => $password ?: $password = bcrypt('secret'),
        'remember_token' => str_random(10),
    ];
});

$factory->define(App\Discussion::class, function (Faker $faker) {
    $userIds = \App\User::select('id')->get()->toArray();
    return [
        'title' => $faker->sentence,
        'content' => $faker->paragraph,
        'user_id' => $faker->randomElement($userIds)['id'],
        'last_user_id' => $faker->randomElement($userIds)['id'],
    ];
});

$factory->define(App\Comment::class, function (Faker $faker) {
    $userIds = \App\User::select('id')->get()->toArray();
    $discussionIds = \App\Discussion::select('id')->get()->toArray();
    return [
        'content' => $faker->paragraph,
        'user_id' => $faker->randomElement($userIds)['id'],
        'discussion_id' => $faker->randomElement($discussionIds)['id'],
    ];
});
